﻿using System;
using System.Collections.Generic;
using FluorineFx;
using Neturion.Dados;
using Neturion.Fachadas;

namespace Neturion.Servicos
{
    [RemotingService]
    public class ServicoFormaPagamento
    {
        public FormaPagamento Inserir(FormaPagamento formaPagamento, Usuario usuarioPermissao)
        {
            return Fachada.GetInstancia().Inserir(formaPagamento, usuarioPermissao);
        }

        public FormaPagamento Atualizar(FormaPagamento formaPagamento, Usuario usuarioPermissao)
        {
            return Fachada.GetInstancia().Atualizar(formaPagamento, usuarioPermissao);
        }

        public DateTime CalcularDataVencimentoFormaPagamento(DateTime dataEmissao, FormaPagamento formaPagamento)
        {
            return Fachada.GetInstancia().CalcularDataVencimentoFormaPagamento(dataEmissao, formaPagamento);
        }

        public void Excluir(FormaPagamento formaPagamento, Usuario usuarioPermissao)
        {
            Fachada.GetInstancia().Excluir(formaPagamento, usuarioPermissao);
        }

        public FormaPagamento ObterFormaPagamentoPorId(int id, Usuario usuarioPermissao)
        {
            return Fachada.GetInstancia().ObterFormaPagamentoPorId(id, usuarioPermissao);
        }

        public IList<FormaPagamento> ObterTodosFormaPagamentos(int inicio, int quantidade, int quantidadeMinima, Usuario usuarioPermissao, string codigo, string descricao, TipoFormaPagamento tipoFormaPagamento, EnumTipoMovimentoFinanceiro enumTipoMovimentoFinanceiro)
        {
            return Fachada.GetInstancia().ObterTodosFormaPagamentos(inicio, quantidade, quantidadeMinima, usuarioPermissao, codigo, descricao, tipoFormaPagamento, enumTipoMovimentoFinanceiro);
        }

        public IList<FormaPagamento> ObterTodosFormaPagamentos(Usuario usuarioPermissao, string codigo, string descricao, TipoFormaPagamento tipoFormaPagamento, EnumTipoMovimentoFinanceiro enumTipoMovimentoFinanceiro)
        {
            return Fachada.GetInstancia().ObterTodosFormaPagamentos(usuarioPermissao, codigo, descricao, tipoFormaPagamento, enumTipoMovimentoFinanceiro);
        }

        public IList<FormaPagamento> ObterTodosFormaPagamentos(Usuario usuarioPermissao)
        {
            return Fachada.GetInstancia().ObterTodosFormaPagamentos(usuarioPermissao);
        }

        public FormaPagamento ObterFormaPagamentoPorCodigo(string codigo, Usuario usuarioPermissao)
        {
            return Fachada.GetInstancia().ObterFormaPagamentoPorCodigo(codigo, usuarioPermissao);
        }

        public IList<FormaPagamento> ObterTodosFormaPagamentosPorTipo(EnumTipoFormaPagamento enumTipoFormaPagamento, Usuario usuarioPermissao)
        {
            return Fachada.GetInstancia().ObterTodosFormaPagamentosPorTipo(enumTipoFormaPagamento, usuarioPermissao);
        }
    }
}